package com.zlc.big_event.exception;


import com.zlc.big_event.pojo.Result;
import io.micrometer.common.util.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 全局异常处理器
     * 捕获所有未被其他处理器捕获的异常
     *
     * @param e 异常对象，继承自Exception类
     * @return 返回一个Result对象，包含错误信息
     */
    @ExceptionHandler(Exception.class)
    public Result error(Exception e){
        // 打印异常堆栈信息，便于调试和日志记录
        e.printStackTrace();

        // 构造错误信息：如果异常消息为空则使用异常对象的toString方法，否则直接使用异常消息
        // 这样做是为了确保总是能给调用者提供一些错误信息
        String errorMessage = StringUtils.isEmpty(e.getMessage()) ? e.toString() : e.getMessage();

        // 返回一个表示错误的Result对象，携带构造的错误信息
        return Result.error(errorMessage);
    }
}
